#ifndef KEYBOARDMAIN_H
#define KEYBOARDMAIN_H

#include <QWidget>
#include <QFrame>
#include <QLabel>
#include <QVBoxLayout>
#include <QSlider>
#include <QLineEdit>
#include <QGSettings/QGSettings>
#include <QPushButton>
#include <QProcess>
#include <QDebug>
#include <QtDBus/QDBusInterface>
#include "shell/interface.h"
#include "keyboardui.h"
#include "common.h"



class KeyboardMain : public QWidget, CommonInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "org.ukcc.CommonInterface")
    Q_INTERFACES(CommonInterface)
public:
    KeyboardMain();
    ~KeyboardMain() Q_DECL_OVERRIDE;

    QString plugini18nName() Q_DECL_OVERRIDE;
    int pluginTypes() Q_DECL_OVERRIDE;
    QWidget *pluginUi() Q_DECL_OVERRIDE;
    const QString name() const Q_DECL_OVERRIDE;
    bool isShowOnHomePage() const Q_DECL_OVERRIDE;
    QIcon icon() const Q_DECL_OVERRIDE;
    bool isEnable() const Q_DECL_OVERRIDE;

private:
    bool            mFirstLoad      = true;
    QString         pluginName      = "";
    int             pluginType      = 0;
    KeyboardUi      *keyBoardWidget = nullptr;
    QDBusInterface  *keyBoardDbus   = nullptr;

private:
    void initConnection();
    void initKeyboardStatus();
    void initKeyRepeat();
    void initDelay();
    void initSpeed();
    void initKeyTips();
    void setKeyboardVisible(bool checked);

protected:
    bool eventFilter(QObject *watched, QEvent *event);

public Q_SLOTS:
    void keyRepeatSlot(bool checked);
    void keyDelaySlot(int value);
    void keySpeedSlot(int value);
    void keyTipsSlot(bool checked);
    void inputMethodSetSlot();

    void dataChanged(QString key);
};
#endif // KEYBOARDMAIN_H
